import store from '@/store/index.js'
const baseURL = "https://pcapi-xiaotuxian-front-devtest.itheima.net";
const request = {
	invoke(config) {
		// 1、展示loading
		uni.showLoading({
			title: "加载中",
		});
		// 2、配置基准地址，先判断是不是以http开头
		if (!config.url.startsWith("http")) {
			// 拼接一个基地址
			config.url = baseURL + config.url;
		}
		// 3、配置超时时间
		config.timeout = 10000;
		// 4、添加小程序的请求头部【后端要求我们添加的，并不是一个通用的规范】
		config.header = {
			...config.header,
			"source-client": "miniapp", // 添加小程序端调用标识
		};
		// 5、添加token
		const token = store.state.user.profile.token
		if (token) {
			// 注入到请求头部
			config.header.Authorization = token;
		}
	}, // 请求前触发
	complete() {
		uni.hideLoading(); // 关闭loading效果
	},
};

// 小程序中的所有的api，uni-app都支持，只需要wx-换成uni-
// wx.showToast()  uni.showToast()
uni.addInterceptor("request", request);
uni.addInterceptor("uploadFile", request);

// 响应拦截器
export default (config) => {
	return new Promise((resolve, reject) => {
		uni.request({
			...config,
			success(res) {
				// 判断状态码是不是200-300之间
				if (res.statusCode >= 200 && res.statusCode < 300) {
					resolve(res.data);
				} else {
					console.log(res);
					uni.showToast({
						icon: "none",
						title: res.data.message || "请求错误",
					});
					//   如果状态码不是200-300,抛错
					reject(res.data);
				}
			},
			fail(res) {
				uni.showToast({
					icon: "none",
					title: res.data || "网络错误，请重试",
				});
				reject(res);
			},
		});
	});
};